package com.reading.common.entity.view;

import com.reading.common.entity.BaseObject;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.NotNull;
import java.util.List;

@Getter
@Setter
@ToString
@NoArgsConstructor
public class Book extends BaseObject {

    /**
     * 图书ID
     */
    private Integer bookId;

    /**
     * 图书名称
     */
    @NotEmpty(message = "图书名称不得为空。")
    @Length(min = 2, max = 15, message = "图书名称长度应为2~15个字。")
    private String bookName;

    /**
     * 图书封面
     */
    @NotEmpty(message = "图书封面不得为空。")
    private String bookImg;

    /**
     * 图书类型
     */
    @NotNull(message = "图书类型不得为空。")
    private Integer bookType;

    /**
     * 图书作者
     */
    @NotEmpty(message = "图书作者不得为空。")
    private String bookAuthor;

    /**
     * 图书简介
     */
    @NotEmpty(message = "图书简介不得为空。")
    @Length(min = 15, max = 254, message = "图书简介字数长度应为15~254个字。")
    private String bookDescr;

    /**
     * 图书连载状态
     */
    private Integer bookStatus;

    /**
     * 图书上架状态
     */
    private Integer bookState;


    //-------------------------------------------------------------------------//

    /**
     * 最新章节
     */
    private BookChapter latestChapter;

    /**
     * 章节信息
     */
    private List<BookChapter> chapters;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 当前查看用户的点赞情况
     */
    private Boolean likeStatus;

    /**
     * 收藏数
     */
    private Integer collectCount;

    /**
     * 当前查看用户的收藏情况
     */
    private Boolean collectStatus;

    /**
     * 评论数
     */
    private Integer commentCount;

    /**
     * 评论
     */
    private List<BookComment> comments;

}